package com.jie.eduservice.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jie.eduservice.entity.vo.front.CourseWebVO;
import com.jie.eduservice.entity.EduCourse;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jie.eduservice.entity.vo.CourseInfoVO;
import com.jie.eduservice.entity.vo.CoursePublishVO;
import com.jie.eduservice.entity.vo.CourseQueryVO;
import com.jie.eduservice.entity.vo.front.CourseFrontVO;

import java.util.Map;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author xzj
 * @since 2020-10-09
 */
public interface EduCourseService extends IService<EduCourse> {

    /**
     * 添加课程信息
     * @param courseInfoVO 要添加的课程信息
     */
    String saveCourseInfo(CourseInfoVO courseInfoVO);

    /**
     * 根据课程id查询课程信息
     * @param courseId  要查询的课程id
     * @return          返回课程信息
     */
    CourseInfoVO getCourseInfo(String courseId);

    /**
     * 修改课程信息
     * @param courseInfoVO  要修改的课程信息
     */
    void updateCourseInfo(CourseInfoVO courseInfoVO);

    /**
     * 根据课程id查询课程确认发布信息
     * @param id  课程id
     * @return    返回课程确认发布信息
     */
    CoursePublishVO getPublishCourseInfo(String id);

    /**
     * 获取课程列表(分页, 条件)
     * @param current        当前页
     * @param limit          一页多少条数据
     * @param courseQueryVO  查询条件
     * @return               返回查询到的课程列表
     */
    Page<EduCourse> pageCourseCondition(Long current, Long limit, CourseQueryVO courseQueryVO);

    /**
     * 删除课程
     * @param courseId  要删除的课程id
     */
    void removeCourse(String courseId);

    /**
     * 条件查询带分页查询课程
     * @param page           当前页(之前用的current, 现在改了)
     * @param limit          每页记录数
     * @param courseFrontVO  封装查询信息
     * @return               返回查询到的课程数据以及其它分页数据
     */
    Map<String, Object> getCourseFrontList(Long page, Long limit, CourseFrontVO courseFrontVO);

    /**
     * 根据课程id查询课程详情的方法
     * @param courseId  要查询的课程详细信息的课程id
     * @return          返回查询到的信息
     */
    CourseWebVO getBaseCourseInfo(String courseId);

}
